package com.hc.websocket.sse.service;

import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;

public interface SseService {

    /**
     * 为指定的客户端创建一个新的SseEmitter实例。
     *
     * @param clientId 客户端的唯一标识符。
     * @return 返回一个与客户端关联的SseEmitter对象，用于向客户端发送事件。
     */
    SseEmitter createConnect(String clientId);

    /**
     * 根据客户端ID获取对应的SseEmitter实例。
     *
     * @param clientId 客户端的唯一标识符。
     * @return 返回与指定客户端ID关联的SseEmitter对象，如果不存在，则可能返回null。
     */
    SseEmitter getSseEmitterByClientId(String clientId);

    /**
     * 向所有连接的客户端发送消息。
     *
     * @param msg 要发送给所有客户端的消息内容。
     */
    void sendMessageToAllClient(String msg);

    /**
     * 向指定的客户端发送消息。
     *
     * @param clientId 接收消息的客户端的唯一标识符。
     * @param msg 要发送给指定客户端的消息内容。
     */
    void sendMessageToOneClient(String clientId, String msg);

    /**
     * 关闭与指定客户端的连接。
     *
     * @param clientId 要关闭连接的客户端的唯一标识符。
     */
    void closeConnect(String clientId);
}